package lambda;

import java.time.LocalDate;
import java.util.Arrays;
import java.util.function.Function;
import java.util.function.Supplier;

/**
 * 方法引用
 * 注意事项：
 * 1.被引用的方法，参数要和接口中的抽象方法的参数一样
 * 2.当接口抽象方法有返回值时，被引用的方法也必须有返回值
 */
public class MethodQuoteTest {
    public static void main(String[] args) {
        // 静态方法引用
        nowDate(LocalDate::now);
        // 实例方法引用
        strLength(String::length);
        // 构造方法引用
        getStringArr(int[]::new);
    }

    private static void getStringArr(Function<Integer, int[]> function) {
        System.out.println(Arrays.toString(function.apply(10)));
    }

    private static void strLength(Function<String, Integer> function) {
        System.out.println(function.apply("hello"));
    }

    private static void nowDate(Supplier<LocalDate> supplier) {
        System.out.println(supplier.get());
    }
}
